home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1999 / MacHack 1999.toast / The Hacks / 42 ƒ / 42_plugin_clock.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-06-26  |  973 b   |  51 lines  |  [TEXT/CWIE]

  1. #include "42.h"
  2. #include "42_plugin_manager.h"
  3. #include "42_plugin_clock.h"
  4.  
  5. #include <time.h>
  6.  
  7. /* plugin definition */
  8.  
  9. forty_two_plugin_api    plugin_clock =
  10. {
  11.     clock_init,        // init
  12.     nil,            // kill
  13.     clock_idle,        // idle1
  14.     nil,            // idle2
  15.     nil,            // click
  16.     nil,            // ipc
  17.     nil,            // update
  18.     23,            // req_dialog_item
  19.     (GWorldPtr) 0L        // port
  20. };
  21.  
  22. /* plugin functions */
  23. unsigned long    clock_last_update = 0;
  24.  
  25. int clock_init(void)
  26. {
  27.     SetPort((GrafPtr)plugin_clock.port);
  28.     EraseRect(&plugin_clock.port->portRect);
  29.     return 0;
  30. } /* clock_init */
  31.  
  32. int clock_idle(void)
  33. {
  34.     unsigned char    t[64];
  35.     unsigned long    tt;
  36.     
  37.     if(TickCount() > clock_last_update + 15)
  38.     {
  39.         SetPort((GrafPtr)plugin_clock.port);
  40.         EraseRect(&plugin_clock.port->portRect);
  41.         MoveTo(22,25);
  42.         tt = time(NULL);
  43.         strftime((char *)t+1,sizeof(t)-1,"%H:%M:%S",localtime(&tt));        
  44.         t[0] = strlen(t+1);
  45.         TextFont(4);
  46.         TextSize(9);
  47.         DrawString(t);
  48.         (*plugin_clock.update)(&plugin_clock);
  49.     }
  50.     return 0;
  51. } /* clock_idle */